home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / C / Applications / Python 1.3.3 / Python 133 SRC / Mac / Modules / te / tescan.py < prev    next >
Text File  |  1996-04-12  |  1KB  |  62 lines

  1. # Scan an Apple header file, generating a Python file of generator calls.
  2.  
  3. import addpack
  4. addpack.addpack(':tools:bgen:bgen')
  5. from scantools import Scanner
  6. from bgenlocations import TOOLBOXDIR
  7.  
  8. LONG = "TextEdit"
  9. SHORT = "te"
  10. OBJECT = "TEHandle"
  11.  
  12. def main():
  13.     input = LONG + ".h"
  14.     output = SHORT + "gen.py"
  15.     defsoutput = TOOLBOXDIR + LONG + ".py"
  16.     scanner = MyScanner(input, output, defsoutput)
  17.     scanner.scan()
  18.     scanner.close()
  19.     print "=== Done scanning and generating, now importing the generated code... ==="
  20.     exec "import " + SHORT + "support"
  21.     print "=== Done.  It's up to you to compile it now! ==="
  22.  
  23. class MyScanner(Scanner):
  24.  
  25.     def destination(self, type, name, arglist):
  26.         classname = "Function"
  27.         listname = "functions"
  28.         if arglist:
  29.             t, n, m = arglist[-1]
  30.             # This is non-functional today
  31.             if t == OBJECT and m == "InMode":
  32.                 classname = "Method"
  33.                 listname = "methods"
  34.         return classname, listname
  35.  
  36.     def makeblacklistnames(self):
  37.         return [
  38.             "TEDispose",
  39.             "TEInit",
  40.             "TEGetHiliteRgn",
  41.             ]
  42.  
  43.     def makeblacklisttypes(self):
  44.         return [
  45.             "TEClickLoopUPP",
  46.             "UniversalProcPtr",
  47.             "WordBreakUPP"
  48.             ]
  49.  
  50.     def makerepairinstructions(self):
  51.         return [
  52.             ([("void_ptr", "*", "InMode"), ("long", "*", "InMode")],
  53.              [("InBuffer", "*", "*")]),
  54.              
  55.             # TEContinuousStyle
  56.             ([("short", "mode", "OutMode"), ("TextStyle", "aStyle", "OutMode")],
  57.              [("short", "mode", "InOutMode"), ("TextStyle", "aStyle", "InOutMode")])
  58.             ]
  59.             
  60. if __name__ == "__main__":
  61.     main()
  62.